今天要先來看一下雙層的子查詢。
題目是:一級主管的住址。
翻譯過後,一級主管的居住地資料...(傻眼)
好吧,來試試看!
需要的資料有:
在資料表裡看起來相關的有:
找到資料表後,我們再找出
兩者的橋樑:[Person].[BusinessEntityAddress],
因為這張資料表具備(鍵:BusinessEntityID)(鍵:AddressID)這兩個鍵,
所以可以將表關聯起來,
如圖所示:
另外我們也需要選定範圍,
這次的範圍是「一級主管」,
因此先建立「子」的部分。
先找出一級主管的工作編號(BusinessEntityID):
(暫時先把「管理階層」也列出來,比較安心)
select OrganizationLevel,BusinessEntityID
from [HumanResources].[Employee]
where OrganizationLevel = 1
再找出對應的地址邊號(AddressID):
select AddressID from Person.BusinessEntityAddress where BusinessEntityID
in (select BusinessEntityID from HumanResources.Employee where OrganizationLevel=1)
這樣選出來的結果,也就是我們要找的範圍。
在[Person].[Address]資料表中找出地址
select * from Person.Address where AddressID
in (
select AddressID from Person.BusinessEntityAddress where BusinessEntityID
in (
select BusinessEntityID from HumanResources.Employee where OrganizationLevel=1)
)order by AddressID
之前我們看了一層的子查詢,
以及如何轉換成JOIN,
今天我們學會了子查詢也可以一層又一層(的剝開我的心?)
試著轉換成JOIN看看吧。